import { postAxiosRequest } from "@/services/common";

// 获取表单权限数据
export function getFormPermission() {
  postAxiosRequest("/system/sysMenuForm/getListAccessFormData").then((res) => {
    if (res.statusCode === 200) {
      localStorage.setItem("FormPermission", JSON.stringify(res.data));
    }
  });
}
// 普通表单过滤器，传值code:定义的编码，type：'edit'/'look'编辑/查看
export function commonFormFilter(code, type) {
  const formData = JSON.parse(localStorage.getItem("FormPermission"));
  if (formData) {
    const item = formData.find((item) => item.formCode === code);
    if (item) {
      if (type === "edit" && item.formHandle === "edit") {
        return false;
      } else if (type === "look" && item.formHandle === "look") {
        return false;
      }
    }
  }
  return true;
}
// 拖拽表单过滤器 传值data:字段属性
export function generateFormFilter(data) {
  const formData = JSON.parse(localStorage.getItem("FormPermission"));
  if (formData) {
    const item = formData.find(
      (item) => item.formCode === data.key || item.formCode === data.model
    );
    // const item = formData.find(item => item.formCode === data.key);
    if (item) {
      if (item.formHandle == "edit") {
        data.options.disabled = true;
      } else if (item.formHandle == "look") {
        data.options.hidden = true;
      }
    }
  }
  return data;
}

/**
 * 使用方法
 * （自建页面）
 * 1.当前菜单中添加字段编码，然后去岗位角色权限页面授权;
 * 2.import { getFormPermission, commonFormFilter } from "@/utils/formFilter";
 * 3.在生命周期mounted中调用getFormPermission;
 * mounted() {
 *   getFormPermission();
 * },
 * 4.在需要设置权限的字段上设置值，例：
 * <a-form-item v-if="hasPermission('xxxx','look')" :label="$ct('ruleName', '规则名称')" :labelCol="labelCol" :wrapperCol="wrapperCol">
 *     <a-input :disabled="!hasPermission('xxxx','edit')"/>
 * </a-form-item>
 * hasPermission(code,type) {
 *     return commonFormFilter(code,type)
 * },
 * xxxx为设置的唯一编码 look控制可否查看 edit控制可否编辑
 * 在a-form-item上添加v-if="hasPermission('xxxx','look')" 用于控制是否可查看;
 * 在组件上添加:disabled="!hasPermission('xxxx','edit')" 用于控制是否可编辑;
 *
 * （拖拽生成页面）
 * 1.需要绑定菜单后在菜单管理内的当前菜单中添加字段编码，然后去岗位角色权限页面授权；
 * 2.拖拽表单的表单字段权限编码需要与该字段key值一致；
 */
